x86-hpet: fix booting NULL pointer panic introduced by c/s 21398.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 18 May 2010 12:30:45 +0000 (13:30 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 18 May 2010 12:30:45 +0000 (13:30 +0100)
(XEN) Xen call trace:
(XEN)    [<ffff82c48011fb27>] check_lock+0x19/0x49
(XEN)    [<ffff82c48011ff2a>] _spin_lock_irq+0x28/0x4a
(XEN)    [<ffff82c48018fd6d>] hpet_broadcast_exit+0x92/0x1f0
(XEN)    [<ffff82c4801920b2>] acpi_processor_idle+0x62c/0x6e6
(XEN)    [<ffff82c48014e1a1>] idle_loop+0x62/0x73

Signed-off-by: Wei Gang <gang.wei@intel.com>
xen/arch/x86/hpet.c

index 556368632a1a5847327029815c122490a69896e9..e67e5ce5d39f26f7e560bc98b42e4c02c9682700 100644 (file)
@@ -684,6 +684,9 @@ void hpet_broadcast_exit(void)
     if ( this_cpu(timer_deadline_start) == 0 )
         return;
 
+    if ( !ch )
+        ch = hpet_get_channel(cpu);
+
     /* Reprogram the deadline; trigger timer work now if it has passed. */
     enable_APIC_timer();
     if ( !reprogram_timer(this_cpu(timer_deadline_start)) )